#!/bin/bash
function get_cpu_num(){
  echo $(cat /proc/cpuinfo | grep processor | wc -l)
}
function get_process_num(){
  echo $(ps -ef | grep -E "python.*image_normal_checking.*normals" | grep -v "grep" | wc -l)
}
function get_memory_available(){
  echo `free -m | sed -n '2p' | awk '{printf "%d\n",$7}'`
}
function create_process(){
  cpu_num=$1
  process_num=$2
  if [ $cpu_num -gt $process_num ]; then
    python3 $script normals >/dev/null 2>&1 &
    echo 1
  else
    echo 0
  fi
}
#获取shell脚本所在目录#
current_dir=$(cd $(dirname $0); pwd)

#定义脚本#
script=${current_dir}'/image_normal_checking.py'

# 获取可用内存大小 #
memory_available=`get_memory_available`

# 获取cpu核心数 #
cpu_num=`get_cpu_num`
cpu_num=1

# 获取当前正在运行的进程数 #
process_num=`get_process_num`

echo '机器cpu核心数：'${cpu_num}
echo '机器可用内存大小：'${memory_available}' mb'

#判断内存大小#
if [ $memory_available -gt 150 ]; then
  # 判断cpu核心数与正在运行的进程数 #
  # 核心数大于进程数才能创建新的进程 #
  is_ok=`create_process $cpu_num $process_num`
  if [ $is_ok -eq 1 ]; then
    process_num=`get_process_num`
    echo '创建进程成功，正在运行进程数：'${process_num}
  else
    echo '正在运行进程数：'${process_num}
    echo 'cpu核心数不足，不能创建新进程。你可以手动强制创建'
  fi
else
  echo '内存不足 100 mb，创建进程失败'
fi